The present invention relates generally to smoke simulation methods, and more particularly, to a method of simulating smoke in an electronically generated video image that uses one or more opaque spheres to simulate the smoke.
Battlefield smoke is an important element of cover and concealment. To be effective in battlefield simulations, smoke simulation should include a number of attributes, including the following. The smoke should have controllable size, color, and density to model its creation, battlefield obscuration, and dissipation. The smoke should have limited extent and be three-dimensional in appearance. The term "volumetric smoke" is sometimes used to distinguish the desired effect from that achieved with conventional translucent planes used to simulate smoke. Objects should be obscured in proportion to their distance into a smoke cloud. The smoke cloud should appear perspectively correct and perspectively invariant. The smoke cloud should look as if it were the same object regardless of the viewpoint of the observer. The smoke should look realistic.
In practice, realism and perfection in a computer implemented simulation are compromised in the interests of minimizing costs. One proposed battlefield smoke simulation implementation uses one set of compromises, and is described in a paper published in the December, 1991 Industry/Interservice Training Systems Conference Proceedings. In addition, there are conventional smoke generation methods that make nice looking smoke and cloud images on computer displays, but they run very slowly and are not suitable for high speed rendering required for an image generator that produces 15 to 60 frames per second.
Heretofore there has been a unmet need in the smoke simulation art in that smoke is needed for training tank crews and others in simulated battlefield encounters. Existing image generators do not provide the required perspectively correct volumetric aspects of the smoke, i.e., things should gradually disappear as they become immersed in the smoke. The approach described in the above-cited paper is not perspectively correct and seems expensive to implement. The conventional method is to model smoke using textured translucent polygons, somewhat like glass paintings. However, the "glass painting" are not volumetric and do not look very realistic.
The basic equations used in simulating smoke are discussed below, along with a discussion of the above-cited proposed battlefield smoke simulation implementation. The basic light attenuation equation that applies to most light absorbing media, like smoke, clouds, dust, and haze is: EQU dI/dz=-I/p,
where I is light intensity, p is smoke density, and z is distance through the smoke. Assuming a uniform density, this equation may be integrated to yield an attenuation function: EQU I=Io exp (-z/p)
where Io is incident light intensity, and I is the intensity remaining after traversing a thickness z of the absorbing medium (smoke). The parameter p is a thickness that reduces the light intensity to 1/e of its incident value. For a color image, there are three such equations for red, green, and blue components of the image.
The above exponential attenuation function is the same as for haze fading, which is identically derived. The color components of a pixel are also generated using a factor f=exp (-z/p), and the output color components are given by: EQU I.sub.out =fI.sub.object +(1-f) I.sub.smoke
for each of the three color components of an object and the smoke.
From these equations it has been determined that the keys to an effective smoke generation method are determining how much smoke has been penetrated by the light path, computation (or by using a precomputed lookup table) of the integral of the smoke density (which is exponential if the density is uniform), and application of the attenuation function using f and (1-f). To obtain interesting variations in a smoke cloud, a way must be provided to vary the light penetration distance or the density of the smoke cloud, or both.
The above-cited proposed method of generating simulated smoke varies the computed penetration depth of the smoke using texture maps. In the proposed method, a nominal smoke depth is first computed. The smoke surface starts out as a faceted, polygon model that always faces the viewpoint. The polygon smoke model is similar to a billboard polygon used to receive a color and transparency map for a billboard tree. The "smoke billboard" is gimballed to face the viewpoint in both azimuth and elevation angles, and it uses multiple polygons to approximate a curved surface, much like a piece of the surface of a sphere gimballed around the center of the sphere.
The smoke billboard is textured using two or more parameters. One parameter varies the intensity of the billboard surface, providing a picture of a smoke cloud. A second parameter is added to the nominal smoke depth before computing a smoke fading factor. Varying the depth indirectly provides variations in the transparency of the smoke. The concealment of an object at any point depends upon both the geometric distance from the front of the billboard and upon the texture-induced variation.
One virtue of the above-cited conventional method is that still frames look impressively realistic. The principal drawback, however, is that the smoke is not perspectively invariant. A cloud looks the same in every detail whether viewed from the north, south, east, west, or from above. To keep this perspective flaw from being too obvious, the conventional method models clouds that are close to hemispheric in shape, and which by symmetry, have an outline that is nearly the same when viewed from all directions. A second apparent limitation of this method is that while the smoke objects can be scaled geometrically and the overall transparency can be varied, it is not easy to continuously vary the basic shape for swirling effects or for dissipation.